/**
 * 队列是一种先进先出的数据结构。
 */
#include <iostream>
#include <queue>

using namespace std;

queue<int> init_queue();

void print_queue(queue<int> int_queue);

int main()
{
    // 初始化队列
    queue<int> int_queue = init_queue();
    print_queue(int_queue);
    // 返回队首元素 O(1)
    cout << int_queue.front() << endl;
    // 返回队尾元素 O(1)
    cout << int_queue.back() << endl;
    // 返回队列中元素个数，返回值类型unsigned int O(1)
    cout << int_queue.size() << endl;
    // 判断是否为空，队列为空，返回true O(1)
    if (int_queue.empty())
    {
        cout << "队列为空" << endl;
    } else
    {
        cout << "队列不为空" << endl;
    }
    return 0;
}

/**
 * 初始化队列
 * @return
 */
queue<int> init_queue()
{
    queue<int> int_queue;
    for (int i = 0; i < 5; i++)
    {
        int_queue.push(i);
    }
    return int_queue;
}

/**
 * 打印队列
 * @param int_queue
 */
void print_queue(queue<int> int_queue)
{
    while (!int_queue.empty())
    {
        cout << int_queue.front() << " ";
        int_queue.pop();
    }
    cout << endl;
}
